SQL

Consultas Básicas em SQL

Formado Básico
- Select (lista de atributos)
- From (lista de tabelas)
- Where (condição)

Exemplos:

SELECT datanascimento, endereço
	FROM EMPREGADO
	WHERE pnome= ‘John’ AND minicia = ‘B’ and unome=‘Smith’
πdatanascimento,enderecoσ (pnome= ‘John’ AND minicia = ‘B’ and unome=‘Smith’)(EMPREGADO)
SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME
FROM EMPREGADO AS E, EMPREGADO AS S
WHERE E.COD_GERENTE = S.CPF

Nas tabelas e nos resultados as tuplas duplicadas podem aparecer, uu seja, não há eliminação automática das linhas duplicadas.
Para isso utilizamos:

Joins

O parênteses na clausula from forma uma única tabela: como resultado da clausula join

SELECT FNAME, LNAME, ENDERECO
FROM (EMPREGADO JOIN DEPARTAMENTE ON DNO=DNUMBER)
WHERE DNAME=‘PESQUISA’

Like, between e order by

select * from aluno where nome like 'Jorge‘
select * from aluno where nome like '%a%‘
select * from pagamento where valor between 20 and 32
select * from aluno order by nome asc/desc

Consultas Aninhadas

select * from aluno where id in (select id_aluno from pagamento);
select * from aluno where id not in (select id_aluno from
pagamento)

Junção entre tabelas

select a.nome as NomeAluno, a.id as Matrícula, p.data, p.valor
from aluno as a inner join pagamento as p on a.id=p.id_aluno

select a.nome as NomeAluno, a.id as Matrícula, p.data, p.valor
from aluno as a left join pagamento as p on a.id=p.id_aluno

select a.nome as NomeAluno, a.id as Matrícula, p.data, p.valor
from aluno as a right join pagamento as p on a.id=p.id_aluno

Funções Agregadas e Agrupamento

Função SUM
select sum(valor) from pagamento

Função MAX
Select max(valor) from pagamento

Função AVG
select avg(valor) from pagamento

Função MIN
Select min(valor) from pagamento

Função COUNT
select count(*) from pagamento
select count(distinct data) from pagamento

Cláusula GROUP BY

Exemplo tabela de alunos:

Matricula Nome Sexo Cr
1 A F CC
2 B M CC
3 C M CC
4 D F MC
5 E M MC
SELECT CR, COUNT(*), AS NUM_ALUNOS FROM ALUNOS
GROUP BY CR

Depois da pesquisa:

CR NroAlunos
CC 3
MC 2
Restrições em Group By
SELECT CR, COUNT(*) AS NUM_ALUNOS FROM ALUNOS
GROUP BY CR
HAVING NUM_ALUNOS > 3
Having e Where

A cláusua where restringe a relação
O agrupamento (GROUP BY e HAVING), agrupa o resultado da relação.


Querys feitas na sala

SELECT pnumber,dnum,lname addres, bdate
	FROM projeto as p, departamento as d, empregado as e
	WHERE plocation='Anapolis' and d.num = p.dnum and d.gerente=e.cpf
SELECT p.pnumber, d.dnum, e.lname, e.address, e.bdate
	FROM projeto p
	INNER JOIN departamento d ON d.dnum = p.dnum
	INNER JOIN empregado e ON d.gerente = e.cpf
	WHERE p.plocation = 'Anapolis';
SELECT *
	FROM D INNER JOIN P on D.num = P.dnum
	INNER JOIN  E on